home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / AIncludes / OCEMessaging.a < prev    next >
Encoding:
Text File  |  1997-08-12  |  41.2 KB  |  1,311 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        OCEMessaging.a
  3. ;
  4. ;    Contains:    Apple Open Collaboration Environment Messaging Interfaces.
  5. ;
  6. ;    Version:    Technology:    AOCE Toolbox 1.02
  7. ;                Release:    Universal Interfaces 3.0.1
  8. ;
  9. ;    Copyright:    © 1994-1997 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        Please include the the file and version information (from above) with
  12. ;                the problem description.  Developers belonging to one of the Apple
  13. ;                developer programs can submit bug reports to:
  14. ;
  15. ;                    devsupport@apple.com
  16. ;
  17. ;
  18.     IF &TYPE('__OCEMESSAGING__') = 'UNDEFINED' THEN
  19. __OCEMESSAGING__ SET 1
  20.  
  21.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  22.     include 'Files.a'
  23.     ENDIF
  24.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  25.     include 'Types.a'
  26.     ENDIF
  27.  
  28.     IF &TYPE('__DIGITALSIGNATURE__') = 'UNDEFINED' THEN
  29.     include 'DigitalSignature.a'
  30.     ENDIF
  31.     IF &TYPE('__OCE__') = 'UNDEFINED' THEN
  32.     include 'OCE.a'
  33.     ENDIF
  34.     IF &TYPE('__OCEAUTHDIR__') = 'UNDEFINED' THEN
  35.     include 'OCEAuthDir.a'
  36.     ENDIF
  37.  
  38. ; *****************************************************************************
  39. ;  Definitions common to OCEMessaging and to OCEMail. These relate to addressing,
  40. ;message ids and priorities, etc. 
  41.  
  42. ;  Values of IPMPriority 
  43.  
  44. kIPMAnyPriority                    EQU        0                    ; FOR FILTER ONLY 
  45. kIPMNormalPriority                EQU        1
  46. kIPMLowPriority                    EQU        2
  47. kIPMHighPriority                EQU        3
  48. ; typedef Byte                             IPMPriority
  49.  
  50. ;  Values of IPMAccessMode 
  51.  
  52. kIPMAtMark                        EQU        0
  53. kIPMFromStart                    EQU        1
  54. kIPMFromLEOM                    EQU        2
  55. kIPMFromMark                    EQU        3
  56. ; typedef unsigned short                 IPMAccessMode
  57.  
  58.  
  59. kIPMUpdateMsgBit                EQU        4
  60. kIPMNewMsgBit                    EQU        5
  61. kIPMDeleteMsgBit                EQU        6
  62. ;  Values of IPMNotificationType 
  63.  
  64. kIPMUpdateMsgMask                EQU        $10
  65. kIPMNewMsgMask                    EQU        $20
  66. kIPMDeleteMsgMask                EQU        $40
  67. ; typedef Byte                             IPMNotificationType
  68.  
  69. ;  Values of IPMSenderTag 
  70.  
  71. kIPMSenderRStringTag            EQU        0
  72. kIPMSenderRecordIDTag            EQU        1
  73. ; typedef unsigned short                 IPMSenderTag
  74.  
  75.  
  76. kIPMFromDistListBit                EQU        0
  77. kIPMDummyRecBit                    EQU        1
  78. kIPMFeedbackRecBit                EQU        2                    ; should be redirected to feedback queue 
  79. kIPMReporterRecBit                EQU        3                    ; should be redirected to reporter original queue 
  80. kIPMBCCRecBit                    EQU        4                    ; this recipient is blind to all recipients of message 
  81. ;  Values of OCERecipientOffsetFlags 
  82.  
  83. kIPMFromDistListMask            EQU        $01
  84. kIPMDummyRecMask                EQU        $02
  85. kIPMFeedbackRecMask                EQU        $04
  86. kIPMReporterRecMask                EQU        $08
  87. kIPMBCCRecMask                    EQU        $10
  88. ; typedef Byte                             OCERecipientOffsetFlags
  89.  
  90. OCECreatorType            RECORD 0
  91. msgCreator                 ds.l    1                ; offset: $0 (0)
  92. msgType                     ds.l    1                ; offset: $4 (4)
  93. sizeof                     EQU *                    ; size:   $8 (8)
  94.                         ENDR
  95.  
  96. kIPMTypeWildCard                EQU        'ipmw'
  97. kIPMFamilyUnspecified            EQU        0
  98. kIPMFamilyWildCard                EQU        $3F3F3F3F            ; '????' * well known signature 
  99. kIPMSignature                    EQU        'ipms'                ; base type * well known message types 
  100. kIPMReportNotify                EQU        'rptn'                ; routing feedback * well known message block types 
  101. kIPMEnclosedMsgType                EQU        'emsg'                ; enclosed (nested) message 
  102. kIPMReportInfo                    EQU        'rpti'                ; recipient information 
  103. kIPMDigitalSignature            EQU        'dsig'                ; digital signature 
  104. ;  Values of IPMMsgFormat 
  105.  
  106. kIPMOSFormatType                EQU        1
  107. kIPMStringFormatType            EQU        2
  108. ; typedef unsigned short                 IPMMsgFormat
  109.  
  110. IPMStringMsgType        RECORD 0
  111. f                         ds        Str32
  112. sizeof                     EQU *                    ; size:   $21 (33)
  113.                         ENDR
  114.  
  115.  
  116. TheType                    RECORD 0
  117. msgOSType                 ds        OCECreatorType ; offset: $0 (0)
  118.                          ORG 0
  119. msgStrType                 ds        IPMStringMsgType ; offset: $0 (0)
  120.                          ORG 34
  121. sizeof                     EQU *                    ; size:   $22 (34)
  122.                         ENDR
  123. IPMMsgType                RECORD 0
  124. format                     ds.w    1                ; offset: $0 (0)        ;  IPMMsgFormat
  125. theType                     ds        TheType            ; offset: $2 (2)
  126. sizeof                     EQU *                    ; size:   $24 (36)
  127.                         ENDR
  128. ;Following are the known extension values for IPM addresses handled by Apple.
  129. ;We define the definition of the entn extension below.
  130. ;
  131.  
  132.  
  133. kOCEalanXtn                        EQU        'alan'
  134. kOCEentnXtn                        EQU        'entn'                ; entn = entity name (aka DSSpec) 
  135. kOCEaphnXtn                        EQU        'aphn'
  136. ;Following are the specific definitions for the extension for the standard
  137. ;OCEMail 'entn' addresses.  [Note, the actual extension is formatted as in
  138. ;IPMEntityNameExtension.]
  139. ;
  140.  
  141. ;  entn extension forms 
  142.  
  143. kOCEAddrXtn                        EQU        'addr'
  144. kOCEQnamXtn                        EQU        'qnam'
  145. kOCEAttrXtn                        EQU        'attr'                ; an attribute specification 
  146. kOCESpAtXtn                        EQU        'spat'                ; specific attribute 
  147. ;Following are the specific definitions for standard
  148. ;OCEMail 'aphn' extension value.  
  149. ;
  150. ;All RStrings here are packed (e.g. truncated to length) and even padded (e.g.
  151. ;if length odd, then a pad byte (zero) should be introduced before the next field).
  152. ;
  153. ;The extension value is in the packed form of the following structure:
  154. ;    RString        phoneNumber;
  155. ;    RString        modemType;
  156. ;    Str32        queueuName;
  157. ;
  158. ;The body of phoneNumber compound RString is in the packed form of the following structure:
  159. ;    short         subType;
  160. ;    RString     countryCode;                // used when subType == kOCEUseHandyDial
  161. ;    RString        areaCode;                    // used when subType == kOCEUseHandyDial
  162. ;    RString        phone;                        // used when subType == kOCEUseHandyDial
  163. ;    RString        postFix;                    // used when subType == kOCEUseHandyDial
  164. ;    RString        nonHandyDialString;            // used when subType == kOCEDontUseHandyDial
  165. ;
  166.  
  167. ;  phoneNumber sub type constants 
  168.  
  169. kOCEUseHandyDial                EQU        1
  170. kOCEDontUseHandyDial            EQU        2
  171. ;  FORMAT OF A PACKED FORM RECIPIENT 
  172. ProtoOCEPackedRecipient    RECORD 0
  173. dataLength                 ds.w    1                ; offset: $0 (0)
  174. sizeof                     EQU *                    ; size:   $2 (2)
  175.                         ENDR
  176.  
  177. kOCEPackedRecipientMaxBytes        EQU        4094
  178. OCEPackedRecipient        RECORD 0
  179. dataLength                 ds.w    1                ; offset: $0 (0)
  180. data                     ds.b    4094            ; offset: $2 (2)
  181. sizeof                     EQU *                    ; size:   $1000 (4096)
  182.                         ENDR
  183. IPMEntnQueueExtension    RECORD 0
  184. queueName                 ds        Str32            ; offset: $0 (0)
  185.                          ORG 34
  186. sizeof                     EQU *                    ; size:   $22 (34)
  187.                         ENDR
  188. ;  kOCEAttrXtn 
  189. IPMEntnAttributeExtension RECORD 0
  190. attributeName             ds        AttributeType    ; offset: $0 (0)
  191. sizeof                     EQU *                    ; size:   $24 (36)
  192.                         ENDR
  193. ;  kOCESpAtXtn 
  194. IPMEntnSpecificAttributeExtension RECORD 0
  195. attributeCreationID         ds        AttributeCreationID ; offset: $0 (0)
  196. attributeName             ds        AttributeType    ; offset: $8 (8)
  197. sizeof                     EQU *                    ; size:   $2C (44)
  198.                         ENDR
  199. ;  All IPM entn extensions fit within the following 
  200. IPMEntityNameExtension    RECORD 0
  201. subExtensionType         ds.l    1                ; offset: $0 (0)
  202. specificAttribute         ds        IPMEntnSpecificAttributeExtension ; offset: $4 (4)
  203.                          ORG 4
  204. attribute                 ds        IPMEntnAttributeExtension ; offset: $4 (4)
  205.                          ORG 4
  206. queue                     ds        IPMEntnQueueExtension ; offset: $4 (4)
  207.                          ORG 48
  208. sizeof                     EQU *                    ; size:   $30 (48)
  209.                         ENDR
  210. ;  addresses with kIPMNBPXtn should specify this nbp type 
  211. IPMMsgID                RECORD 0
  212. id                         ds.l    4                ; offset: $0 (0)
  213. sizeof                     EQU *                    ; size:   $10 (16)
  214.                         ENDR
  215.  
  216. ;  Values of IPMHeaderSelector 
  217.  
  218. kIPMTOC                            EQU        0
  219. kIPMSender                        EQU        1
  220. kIPMProcessHint                    EQU        2
  221. kIPMMessageTitle                EQU        3
  222. kIPMMessageType                    EQU        4
  223. kIPMFixedInfo                    EQU        7
  224. ; typedef Byte                             IPMHeaderSelector
  225.  
  226. TheSender                RECORD 0
  227. rString                     ds        RString            ; offset: $0 (0)
  228.                          ORG 0
  229. rid                         ds        PackedRecordID ; offset: $0 (0)
  230. sizeof                     EQU *                    ; size:   $722 (1826)
  231.                         ENDR
  232. IPMSender                RECORD 0
  233. sendTag                     ds.w    1                ; offset: $0 (0)
  234. theSender                 ds        TheSender        ; offset: $2 (2)
  235. sizeof                     EQU *                    ; size:   $724 (1828)
  236.                         ENDR
  237. ; *****************************************************************************
  238. ;  Definitions specific to OCEMessaging 
  239. ; typedef unsigned long                 IPMContextRef
  240.  
  241. ; typedef unsigned long                 IPMQueueRef
  242.  
  243. ; typedef unsigned long                 IPMMsgRef
  244.  
  245. ; typedef unsigned long                 IPMSeqNum
  246.  
  247. IPMProcHint                RECORD 0
  248. f                         ds        Str32
  249. sizeof                     EQU *                    ; size:   $21 (33)
  250.                         ENDR
  251.  
  252.  
  253. IPMQueueName            RECORD 0
  254. f                         ds        Str32
  255. sizeof                     EQU *                    ; size:   $21 (33)
  256.                         ENDR
  257.  
  258.  
  259. IPMFixedHdrInfo            RECORD 0
  260. version                     ds.w    1                ; offset: $0 (0)
  261. authenticated             ds.b    1                ; offset: $2 (2)
  262. signatureEnclosed         ds.b    1                ; offset: $3 (3)        ;   digital signature enclosed 
  263. msgSize                     ds.l    1                ; offset: $4 (4)
  264. notification             ds.b    1                ; offset: $8 (8)
  265. priority                 ds.b    1                ; offset: $9 (9)
  266. blockCount                 ds.w    1                ; offset: $A (10)
  267. originalRcptCount         ds.w    1                ; offset: $C (12)        ;         original number of recipients 
  268. refCon                     ds.l    1                ; offset: $E (14)        ;         Client defined data 
  269. reserved                 ds.w    1                ; offset: $12 (18)
  270. creationTime             ds.l    1                ; offset: $14 (20)        ;         Time when it was created 
  271. msgID                     ds        IPMMsgID        ; offset: $18 (24)
  272. family                     ds.l    1                ; offset: $28 (40)        ;  family this msg belongs (e.g. mail) 
  273. sizeof                     EQU *                    ; size:   $2C (44)
  274.                         ENDR
  275.  
  276. kIPMDeliveryNotificationBit        EQU        0
  277. kIPMNonDeliveryNotificationBit    EQU        1
  278. kIPMEncloseOriginalBit            EQU        2
  279. kIPMSummaryReportBit            EQU        3                    ; modify enclose original to only on error 
  280. kIPMOriginalOnlyOnErrorBit        EQU        4
  281.  
  282. kIPMNoNotificationMask            EQU        $00
  283. kIPMDeliveryNotificationMask    EQU        $01
  284. kIPMNonDeliveryNotificationMask    EQU        $02
  285. kIPMDontEncloseOriginalMask        EQU        $00
  286. kIPMEncloseOriginalMask            EQU        $04
  287. kIPMImmediateReportMask            EQU        $00
  288. kIPMSummaryReportMask            EQU        $08
  289. kIPMOriginalOnlyOnErrorMask        EQU        $10
  290. kIPMEncloseOriginalOnErrorMask    EQU        $14
  291. ;  standard Non delivery codes 
  292.  
  293. kIPMNoSuchRecipient                EQU        $0001
  294. kIPMRecipientMalformed            EQU        $0002
  295. kIPMRecipientAmbiguous            EQU        $0003
  296. kIPMRecipientAccessDenied        EQU        $0004
  297. kIPMGroupExpansionProblem        EQU        $0005
  298. kIPMMsgUnreadable                EQU        $0006
  299. kIPMMsgExpired                    EQU        $0007
  300. kIPMMsgNoTranslatableContent    EQU        $0008
  301. kIPMRecipientReqStdCont            EQU        $0009
  302. kIPMRecipientReqSnapShot        EQU        $000A
  303. kIPMNoTransferDiskFull            EQU        $000B
  304. kIPMNoTransferMsgRejectedbyDest    EQU        $000C
  305. kIPMNoTransferMsgTooLarge        EQU        $000D
  306. ; ************************************************************************
  307. ;This is the structure that will be returned by enumerate and getmsginfo
  308. ;This definition is just to give you a template, the position of msgType
  309. ;is variable since this is a packed structure.  procHint and msgType are
  310. ;packed and even length padded.
  311. ;
  312. ;* master message info 
  313.  
  314. IPMMsgInfo                RECORD 0
  315. sequenceNum                 ds.l    1                ; offset: $0 (0)
  316. userData                 ds.l    1                ; offset: $4 (4)
  317. respIndex                 ds.w    1                ; offset: $8 (8)
  318. padByte                     ds.b    1                ; offset: $A (10)
  319. priority                 ds.b    1                ; offset: $B (11)
  320. msgSize                     ds.l    1                ; offset: $C (12)
  321. originalRcptCount         ds.w    1                ; offset: $10 (16)
  322. reserved                 ds.w    1                ; offset: $12 (18)
  323. creationTime             ds.l    1                ; offset: $14 (20)
  324. msgID                     ds        IPMMsgID        ; offset: $18 (24)
  325. family                     ds.l    1                ; offset: $28 (40)        ;  family this msg belongs (e.g. mail) 
  326. procHint                 ds        IPMProcHint        ; offset: $2C (44)
  327. filler2                     ds.b    1                ; offset: $4D (77)
  328. msgType                     ds        IPMMsgType        ; offset: $4E (78)
  329. sizeof                     EQU *                    ; size:   $72 (114)
  330.                         ENDR
  331. IPMBlockType            RECORD 0
  332. f                         ds        OCECreatorType
  333. sizeof                     EQU *                    ; size:   $8 (8)
  334.                         ENDR
  335.  
  336.  
  337. IPMTOC                    RECORD 0
  338. blockType                 ds        IPMBlockType    ; offset: $0 (0)
  339. blockOffset                 ds.l    1                ; offset: $8 (8)
  340. blockSize                 ds.l    1                ; offset: $C (12)
  341. blockRefCon                 ds.l    1                ; offset: $10 (16)
  342. sizeof                     EQU *                    ; size:   $14 (20)
  343.                         ENDR
  344. ;The following structure is just to describe the layout of the SingleFilter.
  345. ;Each field should be packed and word aligned when passed to the IPM ToolBox.
  346. ;
  347.  
  348. IPMSingleFilter            RECORD 0
  349. priority                 ds.b    1                ; offset: $0 (0)
  350. padByte                     ds.b    1                ; offset: $1 (1)
  351. family                     ds.l    1                ; offset: $2 (2)        ;  family this msg belongs (e.g. mail), '????' for all 
  352. script                     ds.w    1                ; offset: $6 (6)        ;  Language Identifier 
  353. hint                     ds        IPMProcHint        ; offset: $8 (8)
  354. filler2                     ds.b    1                ; offset: $29 (41)
  355. msgType                     ds        IPMMsgType        ; offset: $2A (42)
  356. sizeof                     EQU *                    ; size:   $4E (78)
  357.                         ENDR
  358. IPMFilter                RECORD 0
  359. count                     ds.w    1                ; offset: $0 (0)
  360. sFilters                 ds        IPMSingleFilter ; offset: $2 (2) <-- really an array of length one
  361. sizeof                     EQU *                    ; size:   $50 (80)
  362.                         ENDR
  363. ; *************************************************************************
  364. ;Following structures define the “start” of a recipient report block and the
  365. ;elements of the array respectively.
  366. ;
  367.  
  368. IPMReportBlockHeader    RECORD 0
  369. msgID                     ds        IPMMsgID        ; offset: $0 (0)        ;  message id of the original 
  370. creationTime             ds.l    1                ; offset: $10 (16)        ;  creation time of the report 
  371. sizeof                     EQU *                    ; size:   $14 (20)
  372.                         ENDR
  373. OCERecipientReport        RECORD 0
  374. rcptIndex                 ds.w    1                ; offset: $0 (0)        ;  index of recipient in original message 
  375. result                     ds.w    1                ; offset: $2 (2)        ;  result of sending letter to this recipient
  376. sizeof                     EQU *                    ; size:   $4 (4)
  377.                         ENDR
  378. ; ************************************************************************
  379.  
  380.  
  381. ; typedef IPMParamBlock *                IPMParamBlockPtr
  382.  
  383. IPMOpenContextPB        RECORD 0
  384. qLink                     ds.l    1                ; offset: $0 (0)
  385. reservedH1                 ds.l    1                ; offset: $4 (4)
  386. reservedH2                 ds.l    1                ; offset: $8 (8)
  387. ioCompletion             ds.l    1                ; offset: $C (12)
  388. ioResult                 ds.w    1                ; offset: $10 (16)
  389. saveA5                     ds.l    1                ; offset: $12 (18)
  390. reqCode                     ds.w    1                ; offset: $16 (22)
  391. contextRef                 ds.l    1                ; offset: $18 (24)        ;  <--  Context reference to be used in further calls
  392. sizeof                     EQU *                    ; size:   $1C (28)
  393.                         ENDR
  394. IPMCloseContextPB        RECORD 0
  395. f                         ds        IPMOpenContextPB
  396. sizeof                     EQU *                    ; size:   $1C (28)
  397.                         ENDR
  398.  
  399.  
  400. IPMCreateQueuePB        RECORD 0
  401. qLink                     ds.l    1                ; offset: $0 (0)
  402. reservedH1                 ds.l    1                ; offset: $4 (4)
  403. reservedH2                 ds.l    1                ; offset: $8 (8)
  404. ioCompletion             ds.l    1                ; offset: $C (12)
  405. ioResult                 ds.w    1                ; offset: $10 (16)
  406. saveA5                     ds.l    1                ; offset: $12 (18)
  407. reqCode                     ds.w    1                ; offset: $16 (22)
  408. filler1                     ds.l    1                ; offset: $18 (24)
  409. queue                     ds.l    1                ; offset: $1C (28)
  410. identity                 ds.l    1                ; offset: $20 (32)        ;  used only if queue is remote 
  411. owner                     ds.l    1                ; offset: $24 (36)        ;  used only if queue is remote 
  412. sizeof                     EQU *                    ; size:   $28 (40)
  413.                         ENDR
  414. ;  For createqueue and deletequeue only queue and identity are used 
  415. IPMDeleteQueuePB        RECORD 0
  416. f                         ds        IPMCreateQueuePB
  417. sizeof                     EQU *                    ; size:   $28 (40)
  418.                         ENDR
  419.  
  420.  
  421. IPMOpenQueuePB            RECORD 0
  422. qLink                     ds.l    1                ; offset: $0 (0)
  423. reservedH1                 ds.l    1                ; offset: $4 (4)
  424. reservedH2                 ds.l    1                ; offset: $8 (8)
  425. ioCompletion             ds.l    1                ; offset: $C (12)
  426. ioResult                 ds.w    1                ; offset: $10 (16)
  427. saveA5                     ds.l    1                ; offset: $12 (18)
  428. reqCode                     ds.w    1                ; offset: $16 (22)
  429. contextRef                 ds.l    1                ; offset: $18 (24)
  430. queue                     ds.l    1                ; offset: $1C (28)
  431. identity                 ds.l    1                ; offset: $20 (32)
  432. filter                     ds.l    1                ; offset: $24 (36)
  433. newQueueRef                 ds.l    1                ; offset: $28 (40)
  434. notificationProc         ds.l    1                ; offset: $2C (44)
  435. userData                 ds.l    1                ; offset: $30 (48)
  436. noteType                 ds.b    1                ; offset: $34 (52)
  437. padByte                     ds.b    1                ; offset: $35 (53)
  438. reserved                 ds.l    1                ; offset: $36 (54)
  439. reserved2                 ds.l    1                ; offset: $3A (58)
  440. sizeof                     EQU *                    ; size:   $3E (62)
  441.                         ENDR
  442. IPMCloseQueuePB            RECORD 0
  443. qLink                     ds.l    1                ; offset: $0 (0)
  444. reservedH1                 ds.l    1                ; offset: $4 (4)
  445. reservedH2                 ds.l    1                ; offset: $8 (8)
  446. ioCompletion             ds.l    1                ; offset: $C (12)
  447. ioResult                 ds.w    1                ; offset: $10 (16)
  448. saveA5                     ds.l    1                ; offset: $12 (18)
  449. reqCode                     ds.w    1                ; offset: $16 (22)
  450. queueRef                 ds.l    1                ; offset: $18 (24)
  451. sizeof                     EQU *                    ; size:   $1C (28)
  452.                         ENDR
  453. IPMEnumerateQueuePB        RECORD 0
  454. qLink                     ds.l    1                ; offset: $0 (0)
  455. reservedH1                 ds.l    1                ; offset: $4 (4)
  456. reservedH2                 ds.l    1                ; offset: $8 (8)
  457. ioCompletion             ds.l    1                ; offset: $C (12)
  458. ioResult                 ds.w    1                ; offset: $10 (16)
  459. saveA5                     ds.l    1                ; offset: $12 (18)
  460. reqCode                     ds.w    1                ; offset: $16 (22)
  461. queueRef                 ds.l    1                ; offset: $18 (24)
  462. startSeqNum                 ds.l    1                ; offset: $1C (28)
  463. getProcHint                 ds.b    1                ; offset: $20 (32)
  464. getMsgType                 ds.b    1                ; offset: $21 (33)
  465. filler                     ds.w    1                ; offset: $22 (34)
  466. filter                     ds.l    1                ; offset: $24 (36)
  467. numToGet                 ds.w    1                ; offset: $28 (40)
  468. numGotten                 ds.w    1                ; offset: $2A (42)
  469. enumCount                 ds.l    1                ; offset: $2C (44)
  470. enumBuffer                 ds.l    1                ; offset: $30 (48)        ;  will be packed array of IPMMsgInfo 
  471. actEnumCount             ds.l    1                ; offset: $34 (52)
  472. sizeof                     EQU *                    ; size:   $38 (56)
  473.                         ENDR
  474. IPMChangeQueueFilterPB    RECORD 0
  475. f                         ds        IPMEnumerateQueuePB
  476. sizeof                     EQU *                    ; size:   $38 (56)
  477.                         ENDR
  478.  
  479.  
  480. IPMDeleteMsgRangePB        RECORD 0
  481. qLink                     ds.l    1                ; offset: $0 (0)
  482. reservedH1                 ds.l    1                ; offset: $4 (4)
  483. reservedH2                 ds.l    1                ; offset: $8 (8)
  484. ioCompletion             ds.l    1                ; offset: $C (12)
  485. ioResult                 ds.w    1                ; offset: $10 (16)
  486. saveA5                     ds.l    1                ; offset: $12 (18)
  487. reqCode                     ds.w    1                ; offset: $16 (22)
  488. queueRef                 ds.l    1                ; offset: $18 (24)
  489. startSeqNum                 ds.l    1                ; offset: $1C (28)
  490. endSeqNum                 ds.l    1                ; offset: $20 (32)
  491. lastSeqNum                 ds.l    1                ; offset: $24 (36)
  492. sizeof                     EQU *                    ; size:   $28 (40)
  493.                         ENDR
  494.  
  495. IPMOpenMsgPB            RECORD 0
  496. qLink                     ds.l    1                ; offset: $0 (0)
  497. reservedH1                 ds.l    1                ; offset: $4 (4)
  498. reservedH2                 ds.l    1                ; offset: $8 (8)
  499. ioCompletion             ds.l    1                ; offset: $C (12)
  500. ioResult                 ds.w    1                ; offset: $10 (16)
  501. saveA5                     ds.l    1                ; offset: $12 (18)
  502. reqCode                     ds.w    1                ; offset: $16 (22)
  503. queueRef                 ds.l    1                ; offset: $18 (24)
  504. sequenceNum                 ds.l    1                ; offset: $1C (28)
  505. newMsgRef                 ds.l    1                ; offset: $20 (32)
  506. actualSeqNum             ds.l    1                ; offset: $24 (36)
  507. exactMatch                 ds.b    1                ; offset: $28 (40)
  508. padByte                     ds.b    1                ; offset: $29 (41)
  509. reserved                 ds.l    1                ; offset: $2A (42)
  510. sizeof                     EQU *                    ; size:   $2E (46)
  511.                         ENDR
  512.  
  513. IPMOpenHFSMsgPB            RECORD 0
  514. qLink                     ds.l    1                ; offset: $0 (0)
  515. reservedH1                 ds.l    1                ; offset: $4 (4)
  516. reservedH2                 ds.l    1                ; offset: $8 (8)
  517. ioCompletion             ds.l    1                ; offset: $C (12)
  518. ioResult                 ds.w    1                ; offset: $10 (16)
  519. saveA5                     ds.l    1                ; offset: $12 (18)
  520. reqCode                     ds.w    1                ; offset: $16 (22)
  521. hfsPath                     ds.l    1                ; offset: $18 (24)
  522. filler                     ds.l    1                ; offset: $1C (28)
  523. newMsgRef                 ds.l    1                ; offset: $20 (32)
  524. filler2                     ds.l    1                ; offset: $24 (36)
  525. filler3                     ds.b    1                ; offset: $28 (40)
  526. filler4                     ds.b    1                ; offset: $29 (41)
  527. reserved                 ds.l    1                ; offset: $2A (42)
  528. sizeof                     EQU *                    ; size:   $2E (46)
  529.                         ENDR
  530.  
  531. IPMOpenBlockAsMsgPB        RECORD 0
  532. qLink                     ds.l    1                ; offset: $0 (0)
  533. reservedH1                 ds.l    1                ; offset: $4 (4)
  534. reservedH2                 ds.l    1                ; offset: $8 (8)
  535. ioCompletion             ds.l    1                ; offset: $C (12)
  536. ioResult                 ds.w    1                ; offset: $10 (16)
  537. saveA5                     ds.l    1                ; offset: $12 (18)
  538. reqCode                     ds.w    1                ; offset: $16 (22)
  539. msgRef                     ds.l    1                ; offset: $18 (24)
  540. filler                     ds.l    1                ; offset: $1C (28)
  541. newMsgRef                 ds.l    1                ; offset: $20 (32)
  542. filler2                     ds.w    7                ; offset: $24 (36)
  543. blockIndex                 ds.w    1                ; offset: $32 (50)
  544. sizeof                     EQU *                    ; size:   $34 (52)
  545.                         ENDR
  546.  
  547. IPMCloseMsgPB            RECORD 0
  548. qLink                     ds.l    1                ; offset: $0 (0)
  549. reservedH1                 ds.l    1                ; offset: $4 (4)
  550. reservedH2                 ds.l    1                ; offset: $8 (8)
  551. ioCompletion             ds.l    1                ; offset: $C (12)
  552. ioResult                 ds.w    1                ; offset: $10 (16)
  553. saveA5                     ds.l    1                ; offset: $12 (18)
  554. reqCode                     ds.w    1                ; offset: $16 (22)
  555. msgRef                     ds.l    1                ; offset: $18 (24)
  556. deleteMsg                 ds.b    1                ; offset: $1C (28)
  557. filler1                     ds.b    1                ; offset: $1D (29)
  558. sizeof                     EQU *                    ; size:   $1E (30)
  559.                         ENDR
  560.  
  561. IPMGetMsgInfoPB            RECORD 0
  562. qLink                     ds.l    1                ; offset: $0 (0)
  563. reservedH1                 ds.l    1                ; offset: $4 (4)
  564. reservedH2                 ds.l    1                ; offset: $8 (8)
  565. ioCompletion             ds.l    1                ; offset: $C (12)
  566. ioResult                 ds.w    1                ; offset: $10 (16)
  567. saveA5                     ds.l    1                ; offset: $12 (18)
  568. reqCode                     ds.w    1                ; offset: $16 (22)
  569. msgRef                     ds.l    1                ; offset: $18 (24)
  570. info                     ds.l    1                ; offset: $1C (28)
  571. sizeof                     EQU *                    ; size:   $20 (32)
  572.                         ENDR
  573.  
  574. IPMReadHeaderPB            RECORD 0
  575. qLink                     ds.l    1                ; offset: $0 (0)
  576. reservedH1                 ds.l    1                ; offset: $4 (4)
  577. reservedH2                 ds.l    1                ; offset: $8 (8)
  578. ioCompletion             ds.l    1                ; offset: $C (12)
  579. ioResult                 ds.w    1                ; offset: $10 (16)
  580. saveA5                     ds.l    1                ; offset: $12 (18)
  581. reqCode                     ds.w    1                ; offset: $16 (22)
  582. msgRef                     ds.l    1                ; offset: $18 (24)
  583. fieldSelector             ds.w    1                ; offset: $1C (28)
  584. offset                     ds.l    1                ; offset: $1E (30)
  585. count                     ds.l    1                ; offset: $22 (34)
  586. buffer                     ds.l    1                ; offset: $26 (38)
  587. actualCount                 ds.l    1                ; offset: $2A (42)
  588. filler                     ds.w    1                ; offset: $2E (46)
  589. remaining                 ds.l    1                ; offset: $30 (48)
  590. sizeof                     EQU *                    ; size:   $34 (52)
  591.                         ENDR
  592.  
  593. IPMReadRecipientPB        RECORD 0
  594. qLink                     ds.l    1                ; offset: $0 (0)
  595. reservedH1                 ds.l    1                ; offset: $4 (4)
  596. reservedH2                 ds.l    1                ; offset: $8 (8)
  597. ioCompletion             ds.l    1                ; offset: $C (12)
  598. ioResult                 ds.w    1                ; offset: $10 (16)
  599. saveA5                     ds.l    1                ; offset: $12 (18)
  600. reqCode                     ds.w    1                ; offset: $16 (22)
  601. msgRef                     ds.l    1                ; offset: $18 (24)
  602. rcptIndex                 ds.w    1                ; offset: $1C (28)
  603. offset                     ds.l    1                ; offset: $1E (30)
  604. count                     ds.l    1                ; offset: $22 (34)
  605. buffer                     ds.l    1                ; offset: $26 (38)
  606. actualCount                 ds.l    1                ; offset: $2A (42)
  607. reserved                 ds.w    1                ; offset: $2E (46)        ;  must be zero 
  608. remaining                 ds.l    1                ; offset: $30 (48)
  609. originalIndex             ds.w    1                ; offset: $34 (52)
  610. recipientOffsetFlags     ds.b    1                ; offset: $36 (54)
  611. filler1                     ds.b    1                ; offset: $37 (55)
  612. sizeof                     EQU *                    ; size:   $38 (56)
  613.                         ENDR
  614.  
  615. ;replyQueue works like recipient. [can no longer read it via ReadHeader]
  616. ;OriginalIndex is meaningless, rcptFlags are used seperately and there are
  617. ;currently none defined.
  618. ;
  619.  
  620. IPMReadReplyQueuePB        RECORD 0
  621. f                         ds        IPMReadRecipientPB
  622. sizeof                     EQU *                    ; size:   $38 (56)
  623.                         ENDR
  624.  
  625.  
  626. IPMGetBlkIndexPB        RECORD 0
  627. qLink                     ds.l    1                ; offset: $0 (0)
  628. reservedH1                 ds.l    1                ; offset: $4 (4)
  629. reservedH2                 ds.l    1                ; offset: $8 (8)
  630. ioCompletion             ds.l    1                ; offset: $C (12)
  631. ioResult                 ds.w    1                ; offset: $10 (16)
  632. saveA5                     ds.l    1                ; offset: $12 (18)
  633. reqCode                     ds.w    1                ; offset: $16 (22)
  634. msgRef                     ds.l    1                ; offset: $18 (24)
  635. blockType                 ds        IPMBlockType    ; offset: $1C (28)
  636. index                     ds.w    1                ; offset: $24 (36)
  637. startingFrom             ds.w    1                ; offset: $26 (38)
  638. actualBlockType             ds        IPMBlockType    ; offset: $28 (40)
  639. actualBlockIndex         ds.w    1                ; offset: $30 (48)
  640. sizeof                     EQU *                    ; size:   $32 (50)
  641.                         ENDR
  642.  
  643. IPMReadMsgPB            RECORD 0
  644. qLink                     ds.l    1                ; offset: $0 (0)
  645. reservedH1                 ds.l    1                ; offset: $4 (4)
  646. reservedH2                 ds.l    1                ; offset: $8 (8)
  647. ioCompletion             ds.l    1                ; offset: $C (12)
  648. ioResult                 ds.w    1                ; offset: $10 (16)
  649. saveA5                     ds.l    1                ; offset: $12 (18)
  650. reqCode                     ds.w    1                ; offset: $16 (22)
  651. msgRef                     ds.l    1                ; offset: $18 (24)
  652. mode                     ds.w    1                ; offset: $1C (28)
  653. offset                     ds.l    1                ; offset: $1E (30)
  654. count                     ds.l    1                ; offset: $22 (34)
  655. buffer                     ds.l    1                ; offset: $26 (38)
  656. actualCount                 ds.l    1                ; offset: $2A (42)
  657. blockIndex                 ds.w    1                ; offset: $2E (46)
  658. remaining                 ds.l    1                ; offset: $30 (48)
  659. sizeof                     EQU *                    ; size:   $34 (52)
  660.                         ENDR
  661. IPMVerifySignaturePB    RECORD 0
  662. qLink                     ds.l    1                ; offset: $0 (0)
  663. reservedH1                 ds.l    1                ; offset: $4 (4)
  664. reservedH2                 ds.l    1                ; offset: $8 (8)
  665. ioCompletion             ds.l    1                ; offset: $C (12)
  666. ioResult                 ds.w    1                ; offset: $10 (16)
  667. saveA5                     ds.l    1                ; offset: $12 (18)
  668. reqCode                     ds.w    1                ; offset: $16 (22)
  669. msgRef                     ds.l    1                ; offset: $18 (24)
  670. signatureContext         ds.l    1                ; offset: $1C (28)
  671. sizeof                     EQU *                    ; size:   $20 (32)
  672.                         ENDR
  673. IPMNewMsgPB                RECORD 0
  674. qLink                     ds.l    1                ; offset: $0 (0)
  675. reservedH1                 ds.l    1                ; offset: $4 (4)
  676. reservedH2                 ds.l    1                ; offset: $8 (8)
  677. ioCompletion             ds.l    1                ; offset: $C (12)
  678. ioResult                 ds.w    1                ; offset: $10 (16)
  679. saveA5                     ds.l    1                ; offset: $12 (18)
  680. reqCode                     ds.w    1                ; offset: $16 (22)
  681. filler                     ds.l    1                ; offset: $18 (24)
  682. recipient                 ds.l    1                ; offset: $1C (28)
  683. replyQueue                 ds.l    1                ; offset: $20 (32)
  684. procHint                 ds.l    1                ; offset: $24 (36)
  685. filler2                     ds.w    1                ; offset: $28 (40)
  686. msgType                     ds.l    1                ; offset: $2A (42)
  687. refCon                     ds.l    1                ; offset: $2E (46)
  688. newMsgRef                 ds.l    1                ; offset: $32 (50)
  689. filler3                     ds.w    1                ; offset: $36 (54)
  690. filler4                     ds.l    1                ; offset: $38 (56)
  691. identity                 ds.l    1                ; offset: $3C (60)
  692. sender                     ds.l    1                ; offset: $40 (64)
  693. internalUse                 ds.l    1                ; offset: $44 (68)
  694. internalUse2             ds.l    1                ; offset: $48 (72)
  695. sizeof                     EQU *                    ; size:   $4C (76)
  696.                         ENDR
  697. IPMNewHFSMsgPB            RECORD 0
  698. qLink                     ds.l    1                ; offset: $0 (0)
  699. reservedH1                 ds.l    1                ; offset: $4 (4)
  700. reservedH2                 ds.l    1                ; offset: $8 (8)
  701. ioCompletion             ds.l    1                ; offset: $C (12)
  702. ioResult                 ds.w    1                ; offset: $10 (16)
  703. saveA5                     ds.l    1                ; offset: $12 (18)
  704. reqCode                     ds.w    1                ; offset: $16 (22)
  705. hfsPath                     ds.l    1                ; offset: $18 (24)
  706. recipient                 ds.l    1                ; offset: $1C (28)
  707. replyQueue                 ds.l    1                ; offset: $20 (32)
  708. procHint                 ds.l    1                ; offset: $24 (36)
  709. filler2                     ds.w    1                ; offset: $28 (40)
  710. msgType                     ds.l    1                ; offset: $2A (42)
  711. refCon                     ds.l    1                ; offset: $2E (46)
  712. newMsgRef                 ds.l    1                ; offset: $32 (50)
  713. filler3                     ds.w    1                ; offset: $36 (54)
  714. filler4                     ds.l    1                ; offset: $38 (56)
  715. identity                 ds.l    1                ; offset: $3C (60)
  716. sender                     ds.l    1                ; offset: $40 (64)
  717. internalUse                 ds.l    1                ; offset: $44 (68)
  718. internalUse2             ds.l    1                ; offset: $48 (72)
  719. sizeof                     EQU *                    ; size:   $4C (76)
  720.                         ENDR
  721. IPMNestMsgPB            RECORD 0
  722. qLink                     ds.l    1                ; offset: $0 (0)
  723. reservedH1                 ds.l    1                ; offset: $4 (4)
  724. reservedH2                 ds.l    1                ; offset: $8 (8)
  725. ioCompletion             ds.l    1                ; offset: $C (12)
  726. ioResult                 ds.w    1                ; offset: $10 (16)
  727. saveA5                     ds.l    1                ; offset: $12 (18)
  728. reqCode                     ds.w    1                ; offset: $16 (22)
  729. msgRef                     ds.l    1                ; offset: $18 (24)
  730. filler                     ds.w    9                ; offset: $1C (28)
  731. refCon                     ds.l    1                ; offset: $2E (46)
  732. msgToNest                 ds.l    1                ; offset: $32 (50)
  733. filler2                     ds.w    1                ; offset: $36 (54)
  734. startingOffset             ds.l    1                ; offset: $38 (56)
  735. sizeof                     EQU *                    ; size:   $3C (60)
  736.                         ENDR
  737.  
  738. IPMNewNestedMsgBlockPB    RECORD 0
  739. qLink                     ds.l    1                ; offset: $0 (0)
  740. reservedH1                 ds.l    1                ; offset: $4 (4)
  741. reservedH2                 ds.l    1                ; offset: $8 (8)
  742. ioCompletion             ds.l    1                ; offset: $C (12)
  743. ioResult                 ds.w    1                ; offset: $10 (16)
  744. saveA5                     ds.l    1                ; offset: $12 (18)
  745. reqCode                     ds.w    1                ; offset: $16 (22)
  746. msgRef                     ds.l    1                ; offset: $18 (24)
  747. recipient                 ds.l    1                ; offset: $1C (28)
  748. replyQueue                 ds.l    1                ; offset: $20 (32)
  749. procHint                 ds.l    1                ; offset: $24 (36)
  750. filler1                     ds.w    1                ; offset: $28 (40)
  751. msgType                     ds.l    1                ; offset: $2A (42)
  752. refCon                     ds.l    1                ; offset: $2E (46)
  753. newMsgRef                 ds.l    1                ; offset: $32 (50)
  754. filler2                     ds.w    1                ; offset: $36 (54)
  755. startingOffset             ds.l    1                ; offset: $38 (56)
  756. identity                 ds.l    1                ; offset: $3C (60)
  757. sender                     ds.l    1                ; offset: $40 (64)
  758. internalUse                 ds.l    1                ; offset: $44 (68)
  759. internalUse2             ds.l    1                ; offset: $48 (72)
  760. sizeof                     EQU *                    ; size:   $4C (76)
  761.                         ENDR
  762.  
  763. IPMEndMsgPB                RECORD 0
  764. qLink                     ds.l    1                ; offset: $0 (0)
  765. reservedH1                 ds.l    1                ; offset: $4 (4)
  766. reservedH2                 ds.l    1                ; offset: $8 (8)
  767. ioCompletion             ds.l    1                ; offset: $C (12)
  768. ioResult                 ds.w    1                ; offset: $10 (16)
  769. saveA5                     ds.l    1                ; offset: $12 (18)
  770. reqCode                     ds.w    1                ; offset: $16 (22)
  771. msgRef                     ds.l    1                ; offset: $18 (24)
  772. msgID                     ds        IPMMsgID        ; offset: $1C (28)
  773. msgTitle                 ds.l    1                ; offset: $2C (44)
  774. deliveryNotification     ds.b    1                ; offset: $30 (48)
  775. priority                 ds.b    1                ; offset: $31 (49)
  776. cancel                     ds.b    1                ; offset: $32 (50)
  777. padByte                     ds.b    1                ; offset: $33 (51)
  778. reserved                 ds.l    1                ; offset: $34 (52)
  779. signature                 ds.l    1                ; offset: $38 (56)
  780. signatureSize             ds.l    1                ; offset: $3C (60)
  781. signatureContext         ds.l    1                ; offset: $40 (64)
  782. ;  family this msg belongs (e.g. mail) use kIPMFamilyUnspecified by default 
  783. family                     ds.l    1                ; offset: $44 (68)
  784. sizeof                     EQU *                    ; size:   $48 (72)
  785.                         ENDR
  786.  
  787. IPMAddRecipientPB        RECORD 0
  788. qLink                     ds.l    1                ; offset: $0 (0)
  789. reservedH1                 ds.l    1                ; offset: $4 (4)
  790. reservedH2                 ds.l    1                ; offset: $8 (8)
  791. ioCompletion             ds.l    1                ; offset: $C (12)
  792. ioResult                 ds.w    1                ; offset: $10 (16)
  793. saveA5                     ds.l    1                ; offset: $12 (18)
  794. reqCode                     ds.w    1                ; offset: $16 (22)
  795. msgRef                     ds.l    1                ; offset: $18 (24)
  796. recipient                 ds.l    1                ; offset: $1C (28)
  797. reserved                 ds.l    1                ; offset: $20 (32)
  798. sizeof                     EQU *                    ; size:   $24 (36)
  799.                         ENDR
  800.  
  801. IPMAddReplyQueuePB        RECORD 0
  802. qLink                     ds.l    1                ; offset: $0 (0)
  803. reservedH1                 ds.l    1                ; offset: $4 (4)
  804. reservedH2                 ds.l    1                ; offset: $8 (8)
  805. ioCompletion             ds.l    1                ; offset: $C (12)
  806. ioResult                 ds.w    1                ; offset: $10 (16)
  807. saveA5                     ds.l    1                ; offset: $12 (18)
  808. reqCode                     ds.w    1                ; offset: $16 (22)
  809. msgRef                     ds.l    1                ; offset: $18 (24)
  810. filler                     ds.l    1                ; offset: $1C (28)
  811. replyQueue                 ds.l    1                ; offset: $20 (32)
  812. sizeof                     EQU *                    ; size:   $24 (36)
  813.                         ENDR
  814.  
  815. IPMNewBlockPB            RECORD 0
  816. qLink                     ds.l    1                ; offset: $0 (0)
  817. reservedH1                 ds.l    1                ; offset: $4 (4)
  818. reservedH2                 ds.l    1                ; offset: $8 (8)
  819. ioCompletion             ds.l    1                ; offset: $C (12)
  820. ioResult                 ds.w    1                ; offset: $10 (16)
  821. saveA5                     ds.l    1                ; offset: $12 (18)
  822. reqCode                     ds.w    1                ; offset: $16 (22)
  823. msgRef                     ds.l    1                ; offset: $18 (24)
  824. blockType                 ds        IPMBlockType    ; offset: $1C (28)
  825. filler                     ds.w    5                ; offset: $24 (36)
  826. refCon                     ds.l    1                ; offset: $2E (46)
  827. filler2                     ds.w    3                ; offset: $32 (50)
  828. startingOffset             ds.l    1                ; offset: $38 (56)
  829. sizeof                     EQU *                    ; size:   $3C (60)
  830.                         ENDR
  831.  
  832. IPMWriteMsgPB            RECORD 0
  833. qLink                     ds.l    1                ; offset: $0 (0)
  834. reservedH1                 ds.l    1                ; offset: $4 (4)
  835. reservedH2                 ds.l    1                ; offset: $8 (8)
  836. ioCompletion             ds.l    1                ; offset: $C (12)
  837. ioResult                 ds.w    1                ; offset: $10 (16)
  838. saveA5                     ds.l    1                ; offset: $12 (18)
  839. reqCode                     ds.w    1                ; offset: $16 (22)
  840. msgRef                     ds.l    1                ; offset: $18 (24)
  841. mode                     ds.w    1                ; offset: $1C (28)
  842. offset                     ds.l    1                ; offset: $1E (30)
  843. count                     ds.l    1                ; offset: $22 (34)
  844. buffer                     ds.l    1                ; offset: $26 (38)
  845. actualCount                 ds.l    1                ; offset: $2A (42)
  846. currentBlock             ds.b    1                ; offset: $2E (46)
  847. filler1                     ds.b    1                ; offset: $2F (47)
  848. sizeof                     EQU *                    ; size:   $30 (48)
  849.                         ENDR
  850.  
  851.  
  852. IPMParamBlock            RECORD 0
  853. qLink                     ds.l    1                ; offset: $0 (0)
  854. reservedH1                 ds.l    1                ; offset: $4 (4)
  855. reservedH2                 ds.l    1                ; offset: $8 (8)
  856. ioCompletion             ds.l    1                ; offset: $C (12)
  857. ioResult                 ds.w    1                ; offset: $10 (16)
  858. saveA5                     ds.l    1                ; offset: $12 (18)
  859. reqCode                     ds.w    1                ; offset: $16 (22)
  860.                          ORG 0
  861. openContextPB             ds        IPMOpenContextPB ; offset: $0 (0)
  862.                          ORG 0
  863. closeContextPB             ds        IPMCloseContextPB ; offset: $0 (0)
  864.                          ORG 0
  865. createQueuePB             ds        IPMCreateQueuePB ; offset: $0 (0)
  866.                          ORG 0
  867. deleteQueuePB             ds        IPMDeleteQueuePB ; offset: $0 (0)
  868.                          ORG 0
  869. openQueuePB                 ds        IPMOpenQueuePB ; offset: $0 (0)
  870.                          ORG 0
  871. closeQueuePB             ds        IPMCloseQueuePB ; offset: $0 (0)
  872.                          ORG 0
  873. enumerateQueuePB         ds        IPMEnumerateQueuePB ; offset: $0 (0)
  874.                          ORG 0
  875. changeQueueFilterPB         ds        IPMChangeQueueFilterPB ; offset: $0 (0)
  876.                          ORG 0
  877. deleteMsgRangePB         ds        IPMDeleteMsgRangePB ; offset: $0 (0)
  878.                          ORG 0
  879. openMsgPB                 ds        IPMOpenMsgPB    ; offset: $0 (0)
  880.                          ORG 0
  881. openHFSMsgPB             ds        IPMOpenHFSMsgPB ; offset: $0 (0)
  882.                          ORG 0
  883. openBlockAsMsgPB         ds        IPMOpenBlockAsMsgPB ; offset: $0 (0)
  884.                          ORG 0
  885. closeMsgPB                 ds        IPMCloseMsgPB    ; offset: $0 (0)
  886.                          ORG 0
  887. getMsgInfoPB             ds        IPMGetMsgInfoPB ; offset: $0 (0)
  888.                          ORG 0
  889. readHeaderPB             ds        IPMReadHeaderPB ; offset: $0 (0)
  890.                          ORG 0
  891. readRecipientPB             ds        IPMReadRecipientPB ; offset: $0 (0)
  892.                          ORG 0
  893. readReplyQueuePB         ds        IPMReadReplyQueuePB ; offset: $0 (0)
  894.                          ORG 0
  895. getBlkIndexPB             ds        IPMGetBlkIndexPB ; offset: $0 (0)
  896.                          ORG 0
  897. readMsgPB                 ds        IPMReadMsgPB    ; offset: $0 (0)
  898.                          ORG 0
  899. verifySignaturePB         ds        IPMVerifySignaturePB ; offset: $0 (0)
  900.                          ORG 0
  901. newMsgPB                 ds        IPMNewMsgPB        ; offset: $0 (0)
  902.                          ORG 0
  903. newHFSMsgPB                 ds        IPMNewHFSMsgPB ; offset: $0 (0)
  904.                          ORG 0
  905. nestMsgPB                 ds        IPMNestMsgPB    ; offset: $0 (0)
  906.                          ORG 0
  907. newNestedMsgBlockPB         ds        IPMNewNestedMsgBlockPB ; offset: $0 (0)
  908.                          ORG 0
  909. endMsgPB                 ds        IPMEndMsgPB        ; offset: $0 (0)
  910.                          ORG 0
  911. addRecipientPB             ds        IPMAddRecipientPB ; offset: $0 (0)
  912.                          ORG 0
  913. addReplyQueuePB             ds        IPMAddReplyQueuePB ; offset: $0 (0)
  914.                          ORG 0
  915. newBlockPB                 ds        IPMNewBlockPB    ; offset: $0 (0)
  916.                          ORG 0
  917. writeMsgPB                 ds        IPMWriteMsgPB    ; offset: $0 (0)
  918.                          ORG 76
  919. sizeof                     EQU *                    ; size:   $4C (76)
  920.                         ENDR
  921. ;
  922. ; pascal OSErr IPMOpenContext(IPMParamBlockPtr paramBlock, Boolean async)
  923. ;
  924.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  925.         Macro
  926.         _IPMOpenContext
  927.             move.w              #$0400,-(sp)
  928.             dc.w                $AA5E
  929.         EndM
  930.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  931.         IMPORT_CFM_FUNCTION IPMOpenContext
  932.     ENDIF
  933.  
  934. ;
  935. ; pascal OSErr IPMCloseContext(IPMParamBlockPtr paramBlock, Boolean async)
  936. ;
  937.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  938.         Macro
  939.         _IPMCloseContext
  940.             move.w              #$0401,-(sp)
  941.             dc.w                $AA5E
  942.         EndM
  943.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  944.         IMPORT_CFM_FUNCTION IPMCloseContext
  945.     ENDIF
  946.  
  947. ;
  948. ; pascal OSErr IPMNewMsg(IPMParamBlockPtr paramBlock, Boolean async)
  949. ;
  950.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  951.         Macro
  952.         _IPMNewMsg
  953.             move.w              #$0402,-(sp)
  954.             dc.w                $AA5E
  955.         EndM
  956.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  957.         IMPORT_CFM_FUNCTION IPMNewMsg
  958.     ENDIF
  959.  
  960. ;
  961. ; pascal OSErr IPMNewBlock(IPMParamBlockPtr paramBlock, Boolean async)
  962. ;
  963.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  964.         Macro
  965.         _IPMNewBlock
  966.             move.w              #$0404,-(sp)
  967.             dc.w                $AA5E
  968.         EndM
  969.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  970.         IMPORT_CFM_FUNCTION IPMNewBlock
  971.     ENDIF
  972.  
  973. ;
  974. ; pascal OSErr IPMNewNestedMsgBlock(IPMParamBlockPtr paramBlock, Boolean async)
  975. ;
  976.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  977.         Macro
  978.         _IPMNewNestedMsgBlock
  979.             move.w              #$0405,-(sp)
  980.             dc.w                $AA5E
  981.         EndM
  982.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  983.         IMPORT_CFM_FUNCTION IPMNewNestedMsgBlock
  984.     ENDIF
  985.  
  986. ;
  987. ; pascal OSErr IPMNestMsg(IPMParamBlockPtr paramBlock, Boolean async)
  988. ;
  989.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  990.         Macro
  991.         _IPMNestMsg
  992.             move.w              #$0406,-(sp)
  993.             dc.w                $AA5E
  994.         EndM
  995.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  996.         IMPORT_CFM_FUNCTION IPMNestMsg
  997.     ENDIF
  998.  
  999. ;
  1000. ; pascal OSErr IPMWriteMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1001. ;
  1002.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1003.         Macro
  1004.         _IPMWriteMsg
  1005.             move.w              #$0407,-(sp)
  1006.             dc.w                $AA5E
  1007.         EndM
  1008.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1009.         IMPORT_CFM_FUNCTION IPMWriteMsg
  1010.     ENDIF
  1011.  
  1012. ;
  1013. ; pascal OSErr IPMEndMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1014. ;
  1015.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1016.         Macro
  1017.         _IPMEndMsg
  1018.             move.w              #$0408,-(sp)
  1019.             dc.w                $AA5E
  1020.         EndM
  1021.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1022.         IMPORT_CFM_FUNCTION IPMEndMsg
  1023.     ENDIF
  1024.  
  1025. ;
  1026. ; pascal OSErr IPMOpenQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1027. ;
  1028.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1029.         Macro
  1030.         _IPMOpenQueue
  1031.             move.w              #$0409,-(sp)
  1032.             dc.w                $AA5E
  1033.         EndM
  1034.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1035.         IMPORT_CFM_FUNCTION IPMOpenQueue
  1036.     ENDIF
  1037.  
  1038. ;
  1039. ; pascal OSErr IPMCloseQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1040. ;
  1041.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1042.         Macro
  1043.         _IPMCloseQueue
  1044.             move.w              #$040A,-(sp)
  1045.             dc.w                $AA5E
  1046.         EndM
  1047.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1048.         IMPORT_CFM_FUNCTION IPMCloseQueue
  1049.     ENDIF
  1050.  
  1051. ;  Always synchronous 
  1052. ;
  1053. ; pascal OSErr IPMVerifySignature(IPMParamBlockPtr paramBlock)
  1054. ;
  1055.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1056.         Macro
  1057.         _IPMVerifySignature
  1058.             moveq               #0,D0
  1059.             move.b              D0,-(sp)
  1060.             move.w              #$0422,-(sp)
  1061.             dc.w                $AA5E
  1062.         EndM
  1063.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1064.         IMPORT_CFM_FUNCTION IPMVerifySignature
  1065.     ENDIF
  1066.  
  1067. ;
  1068. ; pascal OSErr IPMOpenMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1069. ;
  1070.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1071.         Macro
  1072.         _IPMOpenMsg
  1073.             move.w              #$040B,-(sp)
  1074.             dc.w                $AA5E
  1075.         EndM
  1076.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1077.         IMPORT_CFM_FUNCTION IPMOpenMsg
  1078.     ENDIF
  1079.  
  1080. ;
  1081. ; pascal OSErr IPMCloseMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1082. ;
  1083.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1084.         Macro
  1085.         _IPMCloseMsg
  1086.             move.w              #$040C,-(sp)
  1087.             dc.w                $AA5E
  1088.         EndM
  1089.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1090.         IMPORT_CFM_FUNCTION IPMCloseMsg
  1091.     ENDIF
  1092.  
  1093. ;
  1094. ; pascal OSErr IPMReadMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1095. ;
  1096.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1097.         Macro
  1098.         _IPMReadMsg
  1099.             move.w              #$040D,-(sp)
  1100.             dc.w                $AA5E
  1101.         EndM
  1102.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1103.         IMPORT_CFM_FUNCTION IPMReadMsg
  1104.     ENDIF
  1105.  
  1106. ;
  1107. ; pascal OSErr IPMReadHeader(IPMParamBlockPtr paramBlock, Boolean async)
  1108. ;
  1109.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1110.         Macro
  1111.         _IPMReadHeader
  1112.             move.w              #$040E,-(sp)
  1113.             dc.w                $AA5E
  1114.         EndM
  1115.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1116.         IMPORT_CFM_FUNCTION IPMReadHeader
  1117.     ENDIF
  1118.  
  1119. ;
  1120. ; pascal OSErr IPMOpenBlockAsMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1121. ;
  1122.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1123.         Macro
  1124.         _IPMOpenBlockAsMsg
  1125.             move.w              #$040F,-(sp)
  1126.             dc.w                $AA5E
  1127.         EndM
  1128.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1129.         IMPORT_CFM_FUNCTION IPMOpenBlockAsMsg
  1130.     ENDIF
  1131.  
  1132. ;
  1133. ; pascal OSErr IPMNewHFSMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1134. ;
  1135.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1136.         Macro
  1137.         _IPMNewHFSMsg
  1138.             move.w              #$041E,-(sp)
  1139.             dc.w                $AA5E
  1140.         EndM
  1141.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1142.         IMPORT_CFM_FUNCTION IPMNewHFSMsg
  1143.     ENDIF
  1144.  
  1145. ;
  1146. ; pascal OSErr IPMReadRecipient(IPMParamBlockPtr paramBlock, Boolean async)
  1147. ;
  1148.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1149.         Macro
  1150.         _IPMReadRecipient
  1151.             move.w              #$0410,-(sp)
  1152.             dc.w                $AA5E
  1153.         EndM
  1154.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1155.         IMPORT_CFM_FUNCTION IPMReadRecipient
  1156.     ENDIF
  1157.  
  1158. ;
  1159. ; pascal OSErr IPMReadReplyQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1160. ;
  1161.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1162.         Macro
  1163.         _IPMReadReplyQueue
  1164.             move.w              #$0421,-(sp)
  1165.             dc.w                $AA5E
  1166.         EndM
  1167.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1168.         IMPORT_CFM_FUNCTION IPMReadReplyQueue
  1169.     ENDIF
  1170.  
  1171. ;
  1172. ; pascal OSErr IPMCreateQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1173. ;
  1174.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1175.         Macro
  1176.         _IPMCreateQueue
  1177.             move.w              #$0411,-(sp)
  1178.             dc.w                $AA5E
  1179.         EndM
  1180.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1181.         IMPORT_CFM_FUNCTION IPMCreateQueue
  1182.     ENDIF
  1183.  
  1184. ;
  1185. ; pascal OSErr IPMDeleteQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1186. ;
  1187.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1188.         Macro
  1189.         _IPMDeleteQueue
  1190.             move.w              #$0412,-(sp)
  1191.             dc.w                $AA5E
  1192.         EndM
  1193.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1194.         IMPORT_CFM_FUNCTION IPMDeleteQueue
  1195.     ENDIF
  1196.  
  1197. ;
  1198. ; pascal OSErr IPMEnumerateQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1199. ;
  1200.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1201.         Macro
  1202.         _IPMEnumerateQueue
  1203.             move.w              #$0413,-(sp)
  1204.             dc.w                $AA5E
  1205.         EndM
  1206.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1207.         IMPORT_CFM_FUNCTION IPMEnumerateQueue
  1208.     ENDIF
  1209.  
  1210. ;
  1211. ; pascal OSErr IPMChangeQueueFilter(IPMParamBlockPtr paramBlock, Boolean async)
  1212. ;
  1213.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1214.         Macro
  1215.         _IPMChangeQueueFilter
  1216.             move.w              #$0414,-(sp)
  1217.             dc.w                $AA5E
  1218.         EndM
  1219.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1220.         IMPORT_CFM_FUNCTION IPMChangeQueueFilter
  1221.     ENDIF
  1222.  
  1223. ;
  1224. ; pascal OSErr IPMDeleteMsgRange(IPMParamBlockPtr paramBlock, Boolean async)
  1225. ;
  1226.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1227.         Macro
  1228.         _IPMDeleteMsgRange
  1229.             move.w              #$0415,-(sp)
  1230.             dc.w                $AA5E
  1231.         EndM
  1232.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1233.         IMPORT_CFM_FUNCTION IPMDeleteMsgRange
  1234.     ENDIF
  1235.  
  1236. ;
  1237. ; pascal OSErr IPMAddRecipient(IPMParamBlockPtr paramBlock, Boolean async)
  1238. ;
  1239.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1240.         Macro
  1241.         _IPMAddRecipient
  1242.             move.w              #$0403,-(sp)
  1243.             dc.w                $AA5E
  1244.         EndM
  1245.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1246.         IMPORT_CFM_FUNCTION IPMAddRecipient
  1247.     ENDIF
  1248.  
  1249. ;
  1250. ; pascal OSErr IPMAddReplyQueue(IPMParamBlockPtr paramBlock, Boolean async)
  1251. ;
  1252.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1253.         Macro
  1254.         _IPMAddReplyQueue
  1255.             move.w              #$041D,-(sp)
  1256.             dc.w                $AA5E
  1257.         EndM
  1258.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1259.         IMPORT_CFM_FUNCTION IPMAddReplyQueue
  1260.     ENDIF
  1261.  
  1262. ;
  1263. ; pascal OSErr IPMOpenHFSMsg(IPMParamBlockPtr paramBlock, Boolean async)
  1264. ;
  1265.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1266.         Macro
  1267.         _IPMOpenHFSMsg
  1268.             move.w              #$0417,-(sp)
  1269.             dc.w                $AA5E
  1270.         EndM
  1271.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1272.         IMPORT_CFM_FUNCTION IPMOpenHFSMsg
  1273.     ENDIF
  1274.  
  1275. ;
  1276. ; pascal OSErr IPMGetBlkIndex(IPMParamBlockPtr paramBlock, Boolean async)
  1277. ;
  1278.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1279.         Macro
  1280.         _IPMGetBlkIndex
  1281.             move.w              #$0418,-(sp)
  1282.             dc.w                $AA5E
  1283.         EndM
  1284.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1285.         IMPORT_CFM_FUNCTION IPMGetBlkIndex
  1286.     ENDIF
  1287.  
  1288. ;
  1289. ; pascal OSErr IPMGetMsgInfo(IPMParamBlockPtr paramBlock, Boolean async)
  1290. ;
  1291.     IF TARGET_OS_MAC ** TARGET_CPU_68K ** ¬ TARGET_RT_MAC_CFM THEN
  1292.         Macro
  1293.         _IPMGetMsgInfo
  1294.             move.w              #$0419,-(sp)
  1295.             dc.w                $AA5E
  1296.         EndM
  1297.     ELSEIF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  1298.         IMPORT_CFM_FUNCTION IPMGetMsgInfo
  1299.     ENDIF
  1300.  
  1301.  
  1302.  
  1303.     ENDIF ; __OCEMESSAGING__ 
  1304.  
  1305.